
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Django 1.8.8 release notes &#8212; Django 1.11.22.dev20190603194737 documentation</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/language_data.js"></script>
    <link rel="index" title="Index" href="../genindex.html" />
    <link rel="search" title="Search" href="../search.html" />
    <link rel="next" title="Django 1.8.7 release notes" href="1.8.7.html" />
    <link rel="prev" title="Django 1.8.9 release notes" href="1.8.9.html" />



 
<script type="text/javascript" src="../templatebuiltins.js"></script>
<script type="text/javascript">
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);
</script>


  </head><body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../index.html">Django 1.11.22.dev20190603194737 documentation</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../index.html">Home</a>  |
        <a title="Table of contents" href="../contents.html">Table of contents</a>  |
        <a title="Global index" href="../genindex.html">Index</a>  |
        <a title="Module index" href="../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="1.8.9.html" title="Django 1.8.9 release notes">previous</a>
     |
    <a href="index.html" title="Release notes" accesskey="U">up</a>
   |
    <a href="1.8.7.html" title="Django 1.8.7 release notes">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="releases-1.8.8">
            
  <div class="section" id="s-django-1-8-8-release-notes">
<span id="django-1-8-8-release-notes"></span><h1>Django 1.8.8 release notes<a class="headerlink" href="#django-1-8-8-release-notes" title="Permalink to this headline">¶</a></h1>
<p><em>January 2, 2016</em></p>
<p>Django 1.8.8 fixes several bugs in 1.8.7.</p>
<p>Python 3.2 users, please be advised that we’ve decided to drop support for
Python 3.2 in Django 1.8.x at the end of 2016. We won’t break things
intentionally after that, but we won’t test subsequent releases against Python
3.2 either. Upstream support for Python 3.2 ends February 2016 so we don’t find
much value in providing security updates for a version of Python that could be
insecure. To read more about the decision and to let us know if this will be
problematic for you, please read the <a class="reference external" href="https://groups.google.com/d/topic/django-developers/eMu5UQpUdWs/discussion">django-developers thread</a>.</p>
<div class="section" id="s-bugfixes">
<span id="bugfixes"></span><h2>Bugfixes<a class="headerlink" href="#bugfixes" title="Permalink to this headline">¶</a></h2>
<ul class="simple">
<li>Fixed incorrect <code class="docutils literal notranslate"><span class="pre">unique_together</span></code> field name generation by <code class="docutils literal notranslate"><span class="pre">inspectdb</span></code>
(<a class="reference external" href="https://code.djangoproject.com/ticket/25274">#25274</a>).</li>
<li>Corrected <code class="docutils literal notranslate"><span class="pre">__len</span></code> query lookup on <code class="docutils literal notranslate"><span class="pre">ArrayField</span></code> for empty arrays
(<a class="reference external" href="https://code.djangoproject.com/ticket/25772">#25772</a>).</li>
<li>Restored the ability to use custom formats from <code class="docutils literal notranslate"><span class="pre">formats.py</span></code> with
<code class="docutils literal notranslate"><span class="pre">django.utils.formats.get_format()</span></code> and the <code class="docutils literal notranslate"><span class="pre">date</span></code> template filter
(<a class="reference external" href="https://code.djangoproject.com/ticket/25812">#25812</a>).</li>
<li>Fixed a state bug when migrating a <code class="docutils literal notranslate"><span class="pre">SeparateDatabaseAndState</span></code> operation
backwards (<a class="reference external" href="https://code.djangoproject.com/ticket/25896">#25896</a>).</li>
<li>Fixed missing <code class="docutils literal notranslate"><span class="pre">varchar/text_pattern_ops</span></code> index on <code class="docutils literal notranslate"><span class="pre">CharField</span></code> and
<code class="docutils literal notranslate"><span class="pre">TextField</span></code> respectively when using <code class="docutils literal notranslate"><span class="pre">AlterField</span></code> on PostgreSQL
(<a class="reference external" href="https://code.djangoproject.com/ticket/25412">#25412</a>).</li>
<li>Fixed a state bug when using an <code class="docutils literal notranslate"><span class="pre">AlterModelManagers</span></code> operation
(<a class="reference external" href="https://code.djangoproject.com/ticket/25852">#25852</a>).</li>
<li>Fixed a regression which prevented using a language not in Django’s default
language list (<a class="reference internal" href="../ref/settings.html#std:setting-LANGUAGES"><code class="xref std std-setting docutils literal notranslate"><span class="pre">LANGUAGES</span></code></a>) (<a class="reference external" href="https://code.djangoproject.com/ticket/25915">#25915</a>).</li>
<li><code class="docutils literal notranslate"><span class="pre">django.views.decorators.cache.never_cache()</span></code> now sends more persuasive
headers (added <code class="docutils literal notranslate"><span class="pre">no-cache,</span> <span class="pre">no-store,</span> <span class="pre">must-revalidate</span></code> to <code class="docutils literal notranslate"><span class="pre">Cache-Control</span></code>)
to better prevent caching (<a class="reference external" href="https://code.djangoproject.com/ticket/13008">#13008</a>). This fixes a problem where a
page refresh in Firefox cleared the selected entries in the admin’s
<code class="docutils literal notranslate"><span class="pre">filter_horizontal</span></code> and <code class="docutils literal notranslate"><span class="pre">filter_vertical</span></code> widgets, which could result
in inadvertent data loss if a user didn’t notice that and then submitted the
form (<a class="reference external" href="https://code.djangoproject.com/ticket/22955">#22955</a>).</li>
<li>Fixed a regression in the admin which ignored line breaks in read-only fields
instead of converting them to <code class="docutils literal notranslate"><span class="pre">&lt;br&gt;</span></code> (<a class="reference external" href="https://code.djangoproject.com/ticket/25465">#25465</a>).</li>
<li>Made <code class="docutils literal notranslate"><span class="pre">loaddata</span></code> skip disabling and enabling database constraints when it
doesn’t load any fixtures (<a class="reference external" href="https://code.djangoproject.com/ticket/23372">#23372</a>).</li>
<li>Fixed a crash in <code class="docutils literal notranslate"><span class="pre">QuerySet.values()/values_list()</span></code> after an <code class="docutils literal notranslate"><span class="pre">annotate()</span></code>
and <code class="docutils literal notranslate"><span class="pre">order_by()</span></code> when <code class="docutils literal notranslate"><span class="pre">values()/values_list()</span></code> includes a field not in
the <code class="docutils literal notranslate"><span class="pre">order_by()</span></code> (<a class="reference external" href="https://code.djangoproject.com/ticket/25316">#25316</a>).</li>
</ul>
</div>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../contents.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Django 1.8.8 release notes</a><ul>
<li><a class="reference internal" href="#bugfixes">Bugfixes</a></li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="1.8.9.html"
                        title="previous chapter">Django 1.8.9 release notes</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="1.8.7.html"
                        title="next chapter">Django 1.8.7 release notes</a></p>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="../_sources/releases/1.8.8.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <div class="searchformwrapper">
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">Jun 03, 2019</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="1.8.9.html" title="Django 1.8.9 release notes">previous</a>
     |
    <a href="index.html" title="Release notes" accesskey="U">up</a>
   |
    <a href="1.8.7.html" title="Django 1.8.7 release notes">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>